学习过计算机基础和网络的人都知道域名解析的大概原理和过程,就是细节可能不太清除。下面我就简单介绍一下域名解析的大概过程:
DNS的作用:
DNS的作用:在互联网中,其实没有类似于www.xxx.com这种域名方式,而替代的是以IP地址,如222.222.222.222,那我们在IE地址栏中应当输入222.222.222.222才能打开网站www.xxx.com,但我们细想一下,互联网上的网站成千上万,如果每个网站登陆都需要记住一大串数字,那是不是特别不方便,对于记忆力不强的人,根本无法记住这么烦琐的数字。这个时候DNS就出现了,它的作用就是将222.222.222.222解析为www.xxx.com,那么我们登陆的时候就直接输入域名就可以了。
为什么一定要设置DNS才能上网?有些朋友可能会发现,为什么我可能登陆QQ、MSN,但却打不开网页呢?其实大部分原因都是因为DNS服务器故障造成的,DNS服务器地址是唯一的,是运营商提供给终端用户用来解析IP地址及域名的关系,而如果不设定DNS服务器地址,那么就无法查询地址的去向,自然也就打不开网页,而QQ、MSN等即时聊天软件,采用的是UDP传输协议,即不可靠传输协议,无需提供DNS服务器地址,也同样可以登陆。
DNS缓存简介:
DNS缓存指DNS返回了正确的IP之后,系统就会将这个结果临时储存起来。并且它会为缓存设定一个失效时间 (例如N小时),在这N小时之内,当你再次访问这个网站时,系统就会直接从你电脑本地的DNS缓存中把结果交还给你,而不必再去询问DNS服务器,变相“加速”了网址的解析。
当然,在超过N小时之后,系统会自动再次去询问DNS服务器获得新的结果。所以,当你修改了 DNS 服务器,并且不希望电脑继续使用之前的DNS缓存时,就需要手动去清除本地的缓存了。
DNS缓存分类:
1)浏览器DNS缓存(内存中): 浏览器会按照一定频率缓存DNS记录
2)本地DNS缓存(内存中): 如果浏览器缓存中找不到需要的DNS记录,那就去操作系统找。
3)本地HOSTS文件: Windows系统中位于C:\Windows\System32\drivers\etc
4)路由器DNS(可以登录后台设置DNS服务器地址): 路由器自动获取DNS地址,也可以手动
修改(路由器DNS被篡改会造成域名劫持,你访问的网址都会被定位到同一个位置,但是
IP直接可以访问)
5)ISP的DNS服务器: ISP(互联网服务提供商、联通电信移动),ISP有专门的DNS服务器应
对DNS查询请求
6)根服务器: ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行递归查询
(以访问www.baidu.com为例, DNS服务器先问根域名服务器.com域名服务器的IP地址
,然后再问.com域名服务器,以此类推)
调用系统缓存需要跨进程,消耗大,因此为了解析速度的方便,就有了一系列缓存来加快IP查找速度。
浏览器DNS查找顺序一般是这样的:
浏览器DNS缓存->本地系统DNS缓存->本地计算机HOSTS文件->ISP DNS缓存->递归搜索
期间如果查询到了,也就直接访问ip地址了,这个就像三级缓存原理一样。
我们有时候在破解或者是网络损坏的情况下会清除一些缓存,修改HOSTS文件来达到目的,
下面我就简单示例一下:
我的是无线网络,系统Win10
查看DNS服务器以及DHCP服务器和自己的IP地址:
cmd->ipconfig/all可以查看,其中有些公网IP是可以定位位置的,这里就不展示了
可以看到我的DHCP服务器ip,以及我的DNS服务器的首选ip为114.114.114.114(位于北京人民英雄纪念碑),还有
一个在我位置附近的DNS服务器IP xxx.xxx.xxx.xxx
全国通用DNS地址(国内用户推荐使用,速度较快!)
首先DNS服务器地址添:114.114.114.114
备用DNS服务器地址添:114.114.115.115
全球通用DNS地址(此DNS地址为谷歌服务器的)
首选DNS服务器地址添:8.8.8.8
备用DNS服务器地址添:8.8.4.4
无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Intel(R) Dual Band Wireless-AC 3165
物理地址. . . . . . . . . . . . . : xx-xx-xx-xx-xx-xx
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
IPv6 地址 . . . . . . . . . . . . : 2001:da8:4002:3301:45fd:6156:b8c3:xxxx(首选)
临时 IPv6 地址. . . . . . . . . . : 2001:da8:4002:3301:cdc3:eff1:9911:xxxx(首选)
本地链接 IPv6 地址. . . . . . . . : fe80::45fd:6156:b8c3:42ed%7(首选)
IPv4 地址 . . . . . . . . . . . . : 10.101.41.181(首选)
子网掩码 . . . . . . . . . . . . : 255.255.128.0
获得租约的时间 . . . . . . . . . : 2018年10月9日 12:15:50
租约过期的时间 . . . . . . . . . : 2018年10月11日 8:49:26
默认网关. . . . . . . . . . . . . : fe80::1614:4bff:fe80:3c21%7
10.101.127.254
DHCP 服务器 . . . . . . . . . . . : 10.101.127.254
DHCPv6 IAID . . . . . . . . . . . : 66597953
DHCPv6 客户端 DUID . . . . . . . : xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx-xx
DNS 服务器 . . . . . . . . . . . : 114.114.114.114
xxx.xxx.xxx.xxx
TCPIP 上的 NetBIOS . . . . . . . : 已启用
查看自己的本地dns缓存:
..............................................
记录名称. . . . . . . : ditu.google.cn
记录类型. . . . . . . : 1
生存时间. . . . . . . : 68
数据长度. . . . . . . : 4
部分. . . . . . . . . : 答案
A (主机)记录 . . . . : 203.208.41.79
记录名称. . . . . . . : ditu.google.cn
记录类型. . . . . . . : 1
生存时间. . . . . . . : 68
数据长度. . . . . . . : 4
部分. . . . . . . . . : 答案
A (主机)记录 . . . . : 203.208.41.87
..............................................
清除本地dns缓存:
C:\Users\Xxxxxxx>ipconfig/flushdns
Windows IP 配置
已成功刷新 DNS 解析缓存。
清除浏览器缓存:
我们在开发的时候,有时候会给某个域名绑hosts,用于本地开发测试,但是绑了之后,用谷歌浏览器访问会发现并没有生效,按F12会发现访问的还是线上的ip,说明浏览器是有该域名的dns缓存的,那么如何清除浏览器的dns缓存呢?
谷歌浏览器清除方法如下:打开浏览器,访问如下地址
chrome://net-internals/#dns
如下图:
点击 clear host cache,就清楚了浏览器的dns缓存,再访问绑hosts的域名,就会发现ip变啦
如果是firefox火狐浏览器的话,可以按照以下方式:
在地址栏中 about:config 并回车,可能会出现一个警告信息,直接点击按钮进入,会出现firefox的所有配置信息,通过搜索dns 进行过滤,可以看到一项名为 network.dnsCacheExpirationGracePeriod 项,它对应的值就是DNS缓存的时间,双击此项,会出现修改的提示框,填入 0 (不缓存DNS)即可。
最后给大家推荐一篇讲解浏览器缓存吐槽的英文文章: